#ifndef __IKERNEL__
#define __IKERNEL__


#include <string>
#include <iostream>
#include <map>
#include <vector>
#include <algorithm> 
#include <memory>
#include <Windows.h>


#pragma warning(disable:4102)
#pragma warning(disable:4996)

using namespace std;

class IKernel
{
public:
	virtual ~IKernel() { ; };
	 
public:
	virtual const bool Init(const void * pvdPara, char * pszMsgTxt, int iMsgTxtSize) = 0;
	virtual void AddInstance( void * ptrInstance ) = 0;
	virtual void * Invoke(const char * pszClassName, const void * pvdParaVal, char * pszMsgTxt, const int iMsgTxtSize, int &iInstanceType, const bool bCreateValSetFlg = true) = 0;
	virtual void * CreateValueSet() = 0;
	virtual const void WriteLog(const char * pszLogTxt, const int iWriteLevel, const char * pszVersion = "") = 0;
	virtual const bool StopFlg() = 0;
	virtual const void Stop() = 0;
	virtual const bool InitFlg() = 0;
	virtual const char * ConfigFileName() = 0;
	virtual const char * LastErrMsg() = 0;
	virtual const bool WriteFlg() = 0;
	virtual const int WriteLevel() = 0;
	virtual const int UnRegHeartbeat(long long llProID) = 0;
    virtual const void RegHeartbeat(long long llProID) = 0;
    virtual const bool IsCorpse(long long llProID) = 0;
    virtual const void DisableDataConnect() = 0;
	virtual const int GetConnectTimeOut() = 0;
	virtual void * Tools() = 0;
};
#endif//__IKERNEL__